/*
 * PublishScheduleWindow.java
 * 
 * Copyright (c) 2008, Marshall Scorcio, Ralph Holzmann, 
 *                     Stewart Sweet, Tyler Hoersch, Jeffery Van Handel
 * All rights reserved.
 *
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions are met:
 *     * Redistributions of source code must retain the above copyright
 *       notice, this list of conditions and the following disclaimer.
 *     * Redistributions in binary form must reproduce the above copyright
 *       notice, this list of conditions and the following disclaimer in the
 *       documentation and/or other materials provided with the distribution.
 *     * Neither the name of the University of Wisconsin Oshkosh nor the
 *       names of its contributors may be used to endorse or promote products
 *       derived from this software without specific prior written permission.
 *
 * THIS SOFTWARE IS PROVIDED BY COPYRIGHT HOLDERS AND CONTRIBUTORS ''AS IS'' AND 
 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
 * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
 * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE 
 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 
 * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER 
 * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
 * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 
 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 * 
 */

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.event.*;

public class PublishScheduleWindow extends JFrame implements ActionListener
{   
    private EventListenerList listenerList;
    private JCheckBox emailSchedule;
    private JCheckBox printSchedule;
    private JLabel title;
    private JButton viewScheduleButton;
    private JButton okButton;
    private JButton closeButton;
  
    public PublishScheduleWindow(String scheduleTitle)
    {
        super("Verdandi Schedule Publisher");
        setSize(400, 400);
        initComponents(scheduleTitle); 
        listenerList = new EventListenerList();
    }
    
    public void initComponents(String scheduleTitle)
    {
        emailSchedule = new JCheckBox("Email Schedule");
        emailSchedule.addActionListener(this);
        printSchedule = new JCheckBox("Print Schedule");
        printSchedule.addActionListener(this);
        title = new JLabel("Schedule for: " + scheduleTitle);
        viewScheduleButton = new JButton("View Schedule");
        viewScheduleButton.addActionListener(this);
        okButton = new JButton("Ok");
        okButton.addActionListener(this);
        closeButton = new JButton("Close");
        closeButton.addActionListener(this);
          
        JPanel titlePanel = new JPanel();
        titlePanel.add(title);
        
        JPanel selectionPanel = new JPanel();
        selectionPanel.add(emailSchedule);
        selectionPanel.add(printSchedule);
        selectionPanel.add(viewScheduleButton);
        
        JPanel buttonPanel = new JPanel();
        buttonPanel.add(okButton);
        buttonPanel.add(closeButton);
        
        Container dialog = getContentPane();
        dialog.add("North", titlePanel);
        dialog.add("Center", selectionPanel);
        dialog.add("South", buttonPanel);
        
        pack();
        setResizable(false);
    }
    
    private void fireViewEvent(Object source, String name)
    {
        ViewEvent event = new ViewEvent(source, name);
    
        ViewEventListener[] listeners = listenerList.getListeners(ViewEventListener.class);

        for (int i = 0; i < listeners.length; i++)
        {
            listeners[i].viewEventOccurred(event);
        }
    }
    
    public void actionPerformed(ActionEvent event)
    {
        if (event.getSource() == viewScheduleButton)
        {
            fireViewEvent(viewScheduleButton, "ViewSchedule");
        }
        else if (event.getSource() == okButton)
        {
            fireViewEvent(viewScheduleButton, "Ok");
        }
        else if (event.getSource() == closeButton)
        {
            setVisible(false);
        }
    }

    public boolean isPrintScheduleSelected()
    {
        return printSchedule.isSelected();
    }
    
    public boolean isEmailScheduleSelected()
    {
        return emailSchedule.isSelected();
    }
    
    public void addViewEventListener(ViewEventListener listener)
    {
        listenerList.add(ViewEventListener.class, listener);
    }
    
    public void removeViewEventListener(ViewEventListener listener)
    {
        listenerList.remove(ViewEventListener.class, listener);
    }
}
